1 using UnityEngine;
2 using System.Collections;
3 using UnityStandardAssets.CrossPlatformInput;
4
5 public class PlayerShoot : MonoBehaviour {
6
7
8 RaycastHit shootHit;
9 Ray shootRay;
10 LineRenderer laserLine;
11 int shootableMask;
12 GameObject LaserBeamOrigin;
13 GameObject LaserBeamEnd;
14 bool isShooting = false;
15 public Light spotLight;
16 public int damagePoints = 10;
17
18 public bool isEnabled = true;
19
20 public AudioClip laser1;
21 public AudioClip laser2;
22 public AudioClip laser3;
23 public AudioClip laser4;
24
25 AudioSource audio;
26
27
28 // Use this for initialization
29 void Start () {
30 shootableMask = LayerMask.GetMask ("Enemies");
31 laserLine = GetComponentInChildren<LineRenderer> ();
32 LaserBeamOrigin = GameObject.FindGameObjectWithTag ("LaserBeamOrigin");
33 LaserBeamEnd = GameObject.FindGameObjectWithTag ("LaserBeamEnd");
34 spotLight.enabled = false;
35 laserLine.enabled = false;
36 audio = GetComponent<AudioSource> ();
37
38 }
39
40 // Update is called once per frame
41 void Update () {
42 laserLine.SetPosition(0, LaserBeamOrigin.transform.position);
43
44 #if !MOBILE_INPUT
45 if (Input.GetButtonDown ("Fire1") && isShooting == false && isEnabled == true) {
46 Shoot ();
47
48 }
49 #else
50 if(CrossPlatformInputManager.GetAxisRaw("Mouse X") != 0 || CrossPlatformInputManager.GetAxisRaw("Mouse Y") != 0){
51 Shoot();
52 }
53 #endif
54
55 }
56
57
58 public void Shoot(){
59 isShooting = true;
60 spotLight.enabled = true;
61 laserLine.enabled = true;
62 //laserLine.SetPosition (0, transform.position); // todo: fix this to come out off the eyes
63 laserLine.SetPosition(0, LaserBeamOrigin.transform.position);
64
65
66 //shootRay.origin = transform.position;
67 shootRay.origin = LaserBeamOrigin.transform.position;
68 shootRay.direction = transform.forward;
69
70 if (Physics.Raycast (shootRay, out shootHit, 100.0f, shootableMask)) {
71 laserLine.SetPosition (1, shootHit.point);
72 EnemyHealth enemyHealth = shootHit.collider.GetComponent<EnemyHealth> ();
73 if (enemyHealth != null) {
74 enemyHealth.TakeDamage (damagePoints, shootHit.point);
75 }
76 } else {
77 laserLine.SetPosition (1, LaserBeamEnd.transform.position);
78 }
79
80 Invoke ("StopShooting", 0.15f);
81
82 int randomNumber = Random.Range (1, 4);
83 switch (randomNumber) {
84 case 1:
85 audio.PlayOneShot (laser1);
86 break;
87
88 case 2:
89 audio.PlayOneShot (laser2);
90 break;
91
92 case 3:
93 audio.PlayOneShot (laser3);
94 break;
95
96 case 4:
97 audio.PlayOneShot (laser4);
98 break;
99
100 }
101
102 }
103
104 void StopShooting(){
105 laserLine.enabled = false;
106 isShooting = false;
107 spotLight.enabled = false;
108 }
109
110 public void DisableShooting(){
111 isEnabled = false;
112 }
113 }